bitkeeper revision 1.1236.1.6 (421d38d66ZGTXP7EnaZjRjZIbQKLfg)
authorarun.sharma@intel.com[adsharma] <arun.sharma@intel.com[adsharma]>
Thu, 24 Feb 2005 02:15:50 +0000 (02:15 +0000)
committerarun.sharma@intel.com[adsharma] <arun.sharma@intel.com[adsharma]>
Thu, 24 Feb 2005 02:15:50 +0000 (02:15 +0000)
[PATCH] Setup EFI memory descriptors for I/O Ports

Signed-off-by: Arun Sharma <arun.sharma@intel.com>
xen/arch/ia64/dom_fw.c

index 5084bb5fd0d0d543cdbff321baf14af118a9c530..9b91950d23713eed2a241ec4794b4550c8b6fbd3 100644 (file)
@@ -319,12 +319,12 @@ dom_fw_init (struct domain *d, char *args, int arglen, char *fw_mem, int fw_mem_
        unsigned long maxmem = d->max_pages * PAGE_SIZE;
        unsigned long start_mpaddr = ((d==dom0)?dom0_start:0);
 
-#      define MAKE_MD(typ, attr, start, end)           \
+#      define MAKE_MD(typ, attr, start, end, abs)      \       
        do {                                            \
                md = efi_memmap + i++;                  \
                md->type = typ;                         \
                md->pad = 0;                            \
-               md->phys_addr = start_mpaddr + start;   \
+               md->phys_addr = abs ? start : start_mpaddr + start;     \
                md->virt_addr = 0;                      \
                md->num_pages = (end - start) >> 12;    \
                md->attribute = attr;                   \
@@ -472,27 +472,27 @@ dom_fw_init (struct domain *d, char *args, int arglen, char *fw_mem, int fw_mem_
 
        /* simulate 1MB free memory at physical address zero */
        i = 0;
-       MAKE_MD(EFI_BOOT_SERVICES_DATA,EFI_MEMORY_WB,0*MB,1*MB);
+       MAKE_MD(EFI_BOOT_SERVICES_DATA,EFI_MEMORY_WB,0*MB,1*MB, 0);
        /* hypercall patches live here, masquerade as reserved PAL memory */
-       MAKE_MD(EFI_PAL_CODE,EFI_MEMORY_WB,HYPERCALL_START,HYPERCALL_END);
-       MAKE_MD(EFI_CONVENTIONAL_MEMORY,EFI_MEMORY_WB,HYPERCALL_END,maxmem);
+       MAKE_MD(EFI_PAL_CODE,EFI_MEMORY_WB,HYPERCALL_START,HYPERCALL_END, 0);
+       MAKE_MD(EFI_CONVENTIONAL_MEMORY,EFI_MEMORY_WB,HYPERCALL_END,maxmem, 0);
 #ifdef PASS_THRU_IOPORT_SPACE
        if (d == dom0 && !running_on_sim) {
                /* pass through the I/O port space */
-               efi_memory_desc_t efi_get_io_md(void);
-               efi_memory_desc_t ia64_efi_io_md = efi_get_io_md();
+               efi_memory_desc_t *efi_get_io_md(void);
+               efi_memory_desc_t *ia64_efi_io_md = efi_get_io_md();
                u32 type;
                u64 iostart, ioend, ioattr;
                
-               type = ia64_efi_io_md.type;
-               iostart = ia64_efi_io_md.phys_addr;
-               ioend = ia64_efi_io_md.phys_addr +
-                       (ia64_efi_io_md.num_pages << 12);
-               ioattr = ia64_efi_io_md.attribute;
-               MAKE_MD(type,ioattr,iostart,ioend);
+               type = ia64_efi_io_md->type;
+               iostart = ia64_efi_io_md->phys_addr;
+               ioend = ia64_efi_io_md->phys_addr +
+                       (ia64_efi_io_md->num_pages << 12);
+               ioattr = ia64_efi_io_md->attribute;
+               MAKE_MD(type,ioattr,iostart,ioend, 1);
        }
        else
-               MAKE_MD(EFI_RESERVED_TYPE,0,0,0);
+               MAKE_MD(EFI_RESERVED_TYPE,0,0,0,0);
 #endif
 
        bp->efi_systab = dom_pa(fw_mem);